/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package model;

import excepciones.UsuarioYaExistente;
import excepciones.UsuarioInvalido;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import util.Conexion;

/**
 *
 * @author Jah
 */
public class Usuario {
    private int id;
    private String nombre;
    private String apPaterno;
    private String apMaterno;
    private String email;
    private String privilegio;
    private String sessionKey;
    
    private Usuario()
    {
    
    }

    private Usuario(int id, String nombre, String apPaterno, String apMaterno, String email, String sessionKey, String privilegio) {
        this.id = id;
        this.nombre = nombre;
        this.apPaterno = apPaterno;
        this.apMaterno = apMaterno;
        this.email = email;
        this.sessionKey=sessionKey;
        this.privilegio=privilegio;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getApPaterno() {
        return apPaterno;
    }

    public void setApPaterno(String apPaterno) {
        this.apPaterno = apPaterno;
    }

    public String getApMaterno() {
        return apMaterno;
    }

    public void setApMaterno(String apMaterno) {
        this.apMaterno = apMaterno;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPrivilegio() {
        return privilegio;
    }

    public void setPrivilegio(String privilegio) {
        this.privilegio = privilegio;
    }

    public String getSessionKey() {
        return sessionKey;
    }

    public void setSessionKey(String sessionKey) {
        this.sessionKey = sessionKey;
    }
    
    
    
    public static Usuario registraUsuario(String nombre, String apPaterno, String apMaterno, String email, String contrasena) throws UsuarioYaExistente{
        Conexion cn=Conexion.getConexion();
        String sp;
        System.out.println(contrasena);
        sp=String.format("INSERTA_USUARIO('%s','%s','%s','%s','%s')", nombre, apPaterno, apMaterno, email, contrasena);
        try {
            ResultSet rs= cn.ejecutaSP(sp);
            rs.next();
            int id=rs.getInt(1);
            if(id!=-1){
                return new Usuario(id,nombre, apPaterno, apMaterno, email, null,"1");
            }else{
                throw new UsuarioYaExistente();
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
            return null;
        }
    }
    
    public static Usuario autenticaUsuario(String email, String contrasena) throws UsuarioInvalido{
        Conexion cn=Conexion.getConexion();
        String sp;
        sp=String.format("AUTENTICA_USUARIO('%s','%s')", email, contrasena);
        try {
            ResultSet rs= cn.ejecutaSP(sp);
            rs.next();
            int id=rs.getInt(1);
            if(id!=-1){
                String nombre=rs.getString(2);
                String apPaterno=rs.getString(3);
                String apMaterno=rs.getString(4);
                String emailP=rs.getString(5);
                String priv=rs.getString(6);
                return new Usuario(id,nombre, apPaterno, apMaterno, emailP, null,priv);
            }else{
                throw new UsuarioInvalido();
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
            return null;
        }
    }

    @Override
    public String toString() {
        return "Usuario{" + "id=" + id + ", nombre=" + nombre + ", apPaterno=" + apPaterno + ", apMaterno=" + apMaterno + ", email=" + email + ", privilegio=" + privilegio + ", sessionKey=" + sessionKey + '}';
    }

    
    

    public static void main(String[] args) {
        
    }
}
